// 全局配置对象
var config = {};
// 面包屑
config.bread = {
    // 属性配置集合
    attr: {
        className: '',
        style: {}
    },
    // 元素集合
    items: [
        {
            tag: 'a',
            text: '后台管理'
        },
        {
            tag: 'a',
            text: '商品管理'
        }
    ]
};
// 搜索表单
config.search = {
    // 属性配置集合
    attr: {
        // 超过行数折叠
        foldRows: 3,
        // 折叠状态
        foldStatus: true,
        className: '',
        style: {}
    },
    form: {
        // 必填。属性集合
        attr: {
            // 选填。自定义样式名称
            className: '',
            // 选填。自定义行内样式
            style: {},
            // 选填。表单元素布局列数，支持 1 2 3 4 5 6，默认4列。此处自带响应式缩放列
            columns: 4,
            // 选填。序号
            id: 'searchForm',
            // 必填。表单名称（分页表格组件设置pagetable.attr.formName与此值一致）
            name: 'searchForm',
            // 必填。表单提交路径
            action: '/product/getProductList',
            // 选填。表单提交方式，支持 POST / GET，默认GET
            method: 'post',
            // 选填。页面加载完成后提交表单，一般用于页面展示后显示第一页数据，默认false
            load: true,
            // 选填。是否在提交数据中不增加params参数，true为不增加，false或不设置为增加
            withoutParams: false
        },
        // 选填。表单提交前处理函数，一般用于增加自定义数据校验。返回true才会进行表单提交，不返回或返回false不提交表单
        onSubmit: function (date) {

            //类目编号只能是数字
            var productPrice = date.productPrice;
            if(productPrice != null && productPrice != "" && !/^[0-9]*$/.test(date.productPrice)){
                lv.alert("商品价格只能输入数字!");
                return false;
            }
            var productStock = date.productStock;
            if(productStock != null && productStock != "" && !/^[0-9]*$/.test(date.productStock)){
                lv.alert("商品库存只能输入数字!");
                return false;
            }
            console.log(date);
            return true;
        },
        // 选填。表单提交完成后回调函数，一般用于数据处理，设置分页等。注意该函数处理完数据后需将处理数据返回
        onSuccess: function (result) {
            console.log(result);
            setPage(result.total)
            return result.list;
        },
        // 选填。请求失败处理函数
        onError: function (err) {
            console.error(err);
        },
        // 选填。自定义处理框架校验错误消息，如果没配置，则使用框架默认alert弹出错误消息
        onValidate: function(errMsg) {
            alert(errMsg);
        },
        // 选填。（常用与详情页）
        // 注意此处与attr.action区别：action是提交数据到服务器，这里一般用于读取数据渲染到表单
        // 此处配置项与常用ajax请求配置一样，比如jquery
        ajax: {
            // 必填。数据获取地址
            url: '',
            // 选填。请求方法 GET / POST，默认GET
            method: 'POST',
            // 选填。请求发送参数
            data: {},
            // 选填。是否支持缓存，默认false
            cache: false,
            // 选填。是否页面渲染完成后即可加载，false不加载， true或不配置均会加载
            load: false,
            // 选填。是否在提交数据中不增加params参数，true为不增加，false或不设置为增加
            withoutParams: false,
            // 选填。成功回调函数，这里可以做一下数据处理工作。如有设置，请必须返回处理后的值
            success: function(data) {
                return data;
            },
            // 选填。失败回调函数，这里可以做一下失败提示
            error: function(err) {
                // dosomething
            }
        },
        // 表单元素
        items: [
            {
                tag: 'input',
                label: '商品名称',
                attr: {
                    id: '',
                    name: 'productName'
                }
            },
            {
                tag: 'input',
                label: '商品价格',
                unit: '元',
                attr: {
                    id: '',
                    name: 'productPrice'
                }
            }
            ,
            {
                tag: 'input',
                label: '商品库存',
                unit: '件',
                attr: {
                    id: '',
                    name: 'productStock'
                }
            }
            ,
            {
                tag: 'select',
                label: '商品状态',
                attr: {
                    className: '',
                    style: {},
                    name: 'productStatus',
                    // 选填。适用于ajax读取数据与默认配置不一致。默认 text
                    fieldText: 'text',
                    // 选填。适用于ajax读取数据与默认配置不一致。默认 value
                    fieldValue: 'value'
                },
                options: [
                    {
                        text: '全部',
                        value: '-1',
                    }, {
                        text: '上架',
                        value: '0'
                    }, {
                        text: '下架',
                        value: '1'
                    }

                ]
            }
            ,
            {
                tag: 'select',
                label: '类目编号',
                // 选填。一般用于label文字超长，需要自动换行使用
                labelBreak: true,
                attr: {
                    className: '',
                    style: {},
                    name: 'categoryType',
                    // 选填。适用于ajax读取数据与默认配置不一致。默认 text
                    fieldText: 'categoryName',
                    // 选填。适用于ajax读取数据与默认配置不一致。默认 value
                    fieldValue: 'categoryType'
                },
                options: [
                    {
                        text: '全部',
                        value: '',
                        selected: true
                    }
                ],
                // 选填。异步获取下拉框选项数据
                ajax: {
                    // 必填。数据获取地址url
                    url: '/category/findCategoryAll',
                    // 选填。请求方法，默认GET
                    method: 'GET',
                    // 选填。请求携带参数
                    data: {},
                    // 选填。成功回调函数，一般用户数据预处理，请返回选项最终渲染数组类型数据
                    success: function(result) {
                        return result;
                    },
                    // 选填。失败回调函数
                    error: function(err) {
                        console.log(err);
                    }
                },
                // change事件自定义处理函数，请返回true标识当前选中操作合法，返回false或者不返回则不选中当前选择
                // target: 当前点击元素
                // rowData：用于ajax异步返回数据，为当前选中对象完整数据
                // tableName: 所属动态表格attr.name
                // tableRowIndex: 所属动态表格行号
                onChange: function (target, rowData, tableName, tableRowIndex) {
                    // target是当前操作的对象
                    // 通过target.value可以直接拿到所选值
                    console.log(target.value);
                    // 如果配置了onChange事件处理函数，必须返回true才能设置值
                    return true;
                }
            }
        ],
        // 表单按钮组
        btngroup: {
            attr: {
                // 自定义样式，框架提供对齐方式样式名 center / left / right，默认：left
                className: 'center',
                style: {}
            },
            items: [
                {
                    tag: 'button',
                    text: '查询',
                    attr: {
                        // 配置为submit是标识当前按钮可以提交表单
                        type: 'submit'
                    },
                    onClick: function (e) {
                        console.log(e);
                    }
                }
            ]
        }
    }
};
// 业务操作按钮
config.btngroup = {
    attr: {
        className: 'left',
        style: {}
    },
    items: [
        {
            tag: 'button',
            text: '新建',
            attr: {
                className: '',
                style: {},
                // 选填：权限码
                permission: ''
            },
            onClick: function () {
                var chileFrame = lv.open({
                    // 打开窗口url
                    url: '/product/toAddProduct',
                    // 弹窗宽度
                    width: 430,
                    // 弹窗高度
                    height: 500,
                    // 弹窗名称。设置不同名称可打开多个同样url弹窗
                    name: 'luckincoffee'
                });

                // lv.open('/buyerManager/toAddBuyer');
            }
        },
        {
            tag: 'button',
            text: '修改',
            attr: {
                className: '',
                style: {},
                // 选填：权限码
                permission: '',
                disabled: false
            },
            onClick: function () {
                var dateArray =  config.pagetable.table.attr.checkResult;
                if(dateArray == null || dateArray == "" || dateArray == undefined ){
                    lv.alert("请选择需要修改的列");
                    return;
                }
                var modifyBuyer = lv.open({
                    // 打开窗口url
                    url: '/product/toModifyProduct',
                    // 弹窗宽度
                    width: 400,
                    // 弹窗高度
                    height: 550,
                    // 弹窗名称。设置不同名称可打开多个同样url弹窗
                    name: 'modifyCategory'
                });
            }
        },
        {
            tag: 'button',
            text: '上架/下架',
            attr: {
                className: '',
                style: {},
                // 选填：权限码
                permission: '',
                disabled: false
            },
            onClick: function () {
                var dateArray =  config.pagetable.table.attr.checkResult;
                if(dateArray == null || dateArray == "" || dateArray == undefined ){
                    lv.alert("请选择需要上架或者下架的商品");
                    return;
                }
                //ajax
                $.ajax({
                    type: 'post', // 请求发送方式
                    url: '/product/doShelfOrObtainedProduct', // 请求地址
                    data: {
                        "productId":dateArray.productId
                    },// 请求数据
                    async: true,// 异步，不写默认为True
                    // 请求成功后的回调
                    success: function (data) {
                        lv.alert(data.msg);
                        if(data.code == 1){
                            updateDate()
                        }
                    },
                    error: function (errorMessage) {
                        lv.alert("更新数据错误，请联系管理员");
                    }
                });
            }
        }
    ]
};
// 分页表格
config.pagetable = {
    attr: {
        // 表格标题
        title: '我是表格的标题',
        // 当前分页表格使用哪个表单数据，与form.attr.name一致
        formName: 'searchForm'
    },
    table: {
        // 表格数据：数据对象数组
        data: [],
        attr: {
            // 样式名称
            className: '',
            // 自定义行内样式
            style: {},
            // 宽度
            width: '',
            // 第一列选中类型：radio / checkbox
            checkType: 'radio',
            // 数据列表中哪个属性值作为选中依据，设置唯一属性名
            checkField: 'productId',
            // 选择记录集合：选中完整行记录对象全部存放于此。配置单选时，为一个对象，配置多选时，为一个数组
            checkResult: []
        },
        // 表格记录选择框选中回调函数，当前选择行完整记录
        onCheck: function (rowData) {

            console.log('checked rowData is ', rowData);
        },
        // 异步数据获取配置，与常用ajax请求配置一样，比如jquery
        ajax: {
            // 数据获取地址
            url: '',
            // 请求方法，GET / POST
            method: 'GET',
            // 请求发送参数
            data: {
                page:1,
                rows:2
            },
            // 是否支持缓存
            cache: false,
            // 成功回调函数，这里可以做一下数据处理工作。如有设置，请必须返回处理后的值
            success: function(data) {
                setPage(data.total)
                return data.list;
            },
            // 失败回调函数，这里可以做一下失败提示
            error: function(err) {
                // dosomething
            }
        },
        // 定义表格数据列表
        items: [
            {
                name: 'productName',
                text: '商品名称',
                sort: true
            },
            {
                name: 'productPrice',
                text: '商品价格'
            },
            {
                name: 'productStock',
                text: '商品库存'
            }
            ,
            {
                name: 'productDescription',
                text: '商品描述'
            }
            ,
            {
                name: 'productIcon',
                text: '小图'
            }
            ,
            {
                name: 'categoryType',
                text: '类目编号'
            }
            ,
            {
                name: 'categoryTypeStr',
                text: '类目名称'
            }
            ,
            {
                name: 'productStatus',
                text: '商品状态'
            }

        ],
        // 表格里面列数据需要格式化，可以配置属性名函数
        format: {
            productStatus: function (value) {
                if(value == 1){
                    return "下架";
                }
                return "上架";
            }
        }
    },
    pager: {
        attr: {
            // 分页对齐方式，默认左对齐(left)。支持 left / center / right
            align: 'left',
            // 分页页码显示位置，默认底部(bottom)。可选 top / bottom / both
            position: 'bottom',
            // 每页显示条数，默认15
            rows: 2,
            // 当前页码，默认1
            page: 1,
            // 记录总数。-1 不显示页码只显示上下页，0 或 不设置则不显示分页
            total: 15,
            // 自定义行内样式
            style: {},
            // 自定义样式名称
            className: {}
        },
        // 分页切换回调函数
        onChange: function (pageNo) {
            // ajax(pageNo)
        }
    }
};

// 启动框架
window.lv.start({
    // 选填。配置项填充div的id值，默认 lv-view
    viewId: 'lv-view',
    // 必填。配置项对象
    config: config
});

function updateDate() {
    var date = config.search.form.data;
    lv.formSubmit('searchForm', {
        // json数据对象。额外需要随表单元素一起提交数据
        // 比如指定页码等
        page: 1,
        productName:date.productName,
        productPrice: date.productPrice,
        categoryType: date.categoryType,
        productStatus: date.productStatus,
        productStock: date.productStock
    });
}
function setPage(total) {
    config.pagetable.pager.attr.total = total;
}

function getSelectDate() {
    return config.pagetable.table.attr.checkResult;
}
